Le finetsre (window) La finestra è una zona rettangolare dello schermo che funziona come un piccolo terminale, e permette di interagire con l'utente; la window dispone di diversi gadgets (bottoni) standard di sistema che possono essere specificati dal programmatore all'apertura di quest'ultima: Close Gadget: Il gadget in alto a sinistra che permette la chiusura della finestra Drag Bar: La barra titolo che permette il trascinamento della finestra Zoom Gadget: Il gadget a sinistra tra quelli in alto a destra, permette di scegliere tra due dimensioni della finestra (se la finestra è abilitata a cambiare la sua grandezza) Depth Gadget: Il gadget a destra fra quelli in alto a destra, permette di far passare avanti o dietro la finestra, rispetto a tutte le altre Sizing Gadget: Il gadget in basso a destra, permette di cambiare la dimensione della finestra. La finestra può essere attiva (active), nel qual caso il bordo viene colorato di blu; esiste una sola finestra attiva per volta, dato che selezionando una finestra l'utente decide l'input-focus (vale a dire su quale finestra far convergere i dati di ingresso quali tastiera, mouse ecc.). Per aprire la finestra esistono tre diverse funzioni di intuition, che ricoprono gli stessi ruoli di quelle viste per lo schermo: Finestra = OpenWindowTagList(NuovaFinestra,listatags); Finestra = OpenWindowTags(NuovaFinestra,tagId1,tagVal1,...); Finestra = OpenWindow(NuovaFinestra); "Finestra" è il puntatore alla struttura Window relativa alla finestra aperta (viene ritornato NULL in caso non sia stato possibile aprirla); "NuovaFinestra" è il puntatore alla struttura NewWindow o ExtNewWindow contenente i parametri della finestra da aprire (dal 2.0 non ha più importanza utilizzare questo parametro); mentre "listatags" in OpenWindowTagList o "tagId1,tagVal1,..." in OpenWindowTags sono liste di tag per i parametri della finestra passate nelle due maniere viste la volta scorsa; OpenWindow è la vecchia funzione per l'apertura di una finestra che, utilizzando la struttura ExtNewWindow con flag WFLG_NW_EXTENDED attivato permette la compatibilità con versioni del sistema inferiore al v36. Per chiudere una finestra aperta, bisogna chiamare la funzione: CloseWindow(Finestra); dove "Finestra" è il puntatore alla struttura Window ritornata da OpenWindowTags. Per indicare su quale schermo aprire la finestra, occorre specificare nella OpenWindowTags il tag WA_CustomScreen con il puntatore allo schermo come parametro; se invece si vuole aprire la finestra su schermo pubblico si può indicare il tag WA_PubScreen con il puntatore allo schermo pubblico (ottenuto con LockPubScreen), oppure utilizzando il tag WA_PubScreenName e passando il nome dello schermo pubblico; se non viene specificato nessun tag che indichi quale schermo utilizzare, oppure WA_PubScreenName con parametro NULL, la finestra verrà aperta sullo schermo pubblico di default (normalmente il WorkBench). Esistono tre tipi particolari di finestre, che possono essere impostati mediante gli attributi all'apertura di quest'ultime; da notare che un tipo non esclude l'altro, per cui una finestra può appartenere a tutte e tre le categorie e beneficiare di tutte le caratteristiche. BackDrop window Vale a dire finestra che "cade" dietro; una finestra con questa caratteristica risulta sempre dietro alle altre, anche quando l'utente agisce sul gadget di profondità; la finestra può però essere davanti ad altre di tipo backdrop. L'unico gadget di sistema che questo tipo di finestre può avere è quello di chiusura, mentre non vi sono limitazioni per gadgets creati dall'applicazione. Questo tipo di finestre può servire ad inserire delle immagini di sottofondo che sembrino disegnate direttamente sullo schermo (soprattutto se la finestra è anche di tipo borderless); per attivare questa caratteristica utilizzare l'attributo WA_Backdrop. BorderLess window Una finestra borderless è una finestra senza bordi; vale a dire che i bordi non esistono e non vengono rinfrescati, per cui evitate di utilizzare il titolo per la finestra, o di utilizzare gadget di sistema, poiché ciò provocherebbe il rinfresco di alcune zone dei bordi; evitate di utilizzare finestre borderless che coprano tutto lo schermo, perché potrebbero confondere l'utente; un applicazione tipica è quella accennata prima con le finestre backdrop; per utilizzare questa caratteristica impostare l'attributo WA_Borderless. GimmeZeroZero window Le finestre GimmeZeroZero provvedono a creare un layer (la struttura per la memorizzazione dell'immagine e per il suo rinfresco) separato per il bordo; normalmente se il programmatore disegna o compie una qualunque operazione grafica sulla finestra, deve tener conto del bordo (infatti scrivendo il pixel di cordinate 0,0 si interviene nel primo pixel in alto a sinistra sul bordo); invece se la finestra è di tipo GimmeZeroZero, il programmatore può intervenire solo sul contenuto della finestra senza intaccare il bordo; attivando il GimmeZeroZero in una finestra si aumentano i tempi di rinfresco video, in quanto il sistema deve gestire due layers per una finestra; per attivare questa caratteristica, utilizzare il tag WA_GimmeZeroZero.